#pragma once

#include <iostream>
#include <string>

#include"Util.hpp"

using namespace std;

namespace ns_log
{
     using namespace ns_Util;
    //日志等级
    enum 
    {       
        INFO,
        DEBUG,
        WARNING,
        ERROR,
        FATAL
    };
    //日志格式
    //log()<<"message";
    //等级+文件名+行号+时间
    inline ostream &log(const string &level,const string&filename,int line)//因为多次使用所以用内联
    {
        string message="[";
        //等级
        message+=level;
        message+="]";
        //文件名
        message+="[";
        message+=filename;
        message+="]";
        //行号        
        message+="[";
        message+=to_string(line);
        message+="]";
        //时间
        message+="[";
        message+=TimeUtil::GetTime();
        message+="]";
        //cout本质内部包含缓冲区
        cout<<message;//不要endl进行刷新
        return std::cout;
    }
     #define LOG(level) log(#level, __FILE__, __LINE__) //注意不能加;
}